package com.类加载顺序;

//初始化的顺序是先是静态数据，并且仅初始化一次（如果它们尚未因前面对象的创建或某些动作的执行未被初始化），而后是非静态数据(每次在创建时都会初始化)，然后是构造函数。
//另外直接用类名调用静态数据和静态方法时，这个类中的所以静态成员都会被初始化(非static成员不会被初始化)，前提是他们从未被初始化过。
class Parent {
	private static int b1 = display("调用display，给b1赋值");
	protected int b2;

	public static int display(String s) {
		System.out.println(s);
		return 100;
	}

	public Parent() {
		System.out.println("Parent初始化，b2=" + b2);
		b2 = 200;
	}
}

public class Child extends Parent {
	private int a1 = display("调用display，给a1赋值");
	private static int a2 = display("调用display，给a2赋值");

	public Child() {
		System.out.println("Child初始化");
		System.out.println("b2=" + b2);
	}

	public static void main(String[] args) {
		System.out.println("执行main方法");
		Parent p = new Child();
	}
}